// @flow
import React, { Component } from 'react'
import { Button, Popconfirm, message } from 'antd'
import ReactDom from 'react-dom'
import VarLimitEdit from 'components/VarLimitEdit'
import universalFetch, { handleFetchError } from 'store/modules/fetch'

type Props = {
  data: Object,
  refreshLimit: Function
}
class LimitActions extends Component {
  props: Props
  deleteLimit: Function
  editLimit: Function
  removeNode: Function
  constructor (props: Props) {
    super(props)
    this.deleteLimit = this.deleteLimit.bind(this)
    this.editLimit = this.editLimit.bind(this)
    this.removeNode = this.removeNode.bind(this)
  }

  deleteLimit () {
    const { data, refreshLimit } = this.props
    universalFetch(`${__SERVICE_API__}device/templates/monitors/limits/${data.id}`, {
      method: 'DELETE'
    })
      .then(res => res.json())
      .then((json) => {
        if (json.code !== 200000) {
          throw new Error(JSON.stringify({ code: json.code, message: json.message }))
        }
        message.success('阈值删除成功')
        refreshLimit()
      })
        .catch((error) => {
          handleFetchError(error)
          console.error(error)
          message.error('阈值删除失败')
        })
  }
  editLimit () {
    const container = this.refs.editLimit
    const { refreshLimit, data } = this.props
    ReactDom.render(
      <VarLimitEdit {...{
        data,
        removeNode: this.removeNode,
        refreshLimit
      }} />,
      container
    )
  }

  removeNode () {
    const container = this.refs.editLimit
    ReactDom.unmountComponentAtNode(container)
  }
  render () {
    const { data } = this.props
    let IsShow = 'none'
    if (data.state === 0) {
      IsShow = 'inline-block'
    }
    return (
      <div>
        <label style={{ display: IsShow }}>
          <Button size='small'
            type='primary'
            style={{ marginRight: '10px' }}
            onClick={this.editLimit}
            >
            编辑
          </Button>
          <Popconfirm
            title='确定要删除此阈值吗？'
            onConfirm={this.deleteLimit}
            >
            <Button size='small'
              type='danger'
              style={{ marginRight: '10px' }}
              >
              删除
            </Button>
          </Popconfirm>
        </label>
        <div ref='editLimit' />
      </div>
    )
  }
}

export default LimitActions
